/*
 * Nos sa los atributos de las vistas de los edificios
 */
package mx.edu.itesm.daai.tour;

/**
 *
 * @author Shadow-Xtar
 */
public class EdificioSet {

    private EdificioBean vistaArea;
    private EdificioBean vistaNorte;
    private EdificioBean vistaOeste;
    private EdificioBean vistaEste;
    private EdificioBean vistaSur;

    /**
     * Genera las vistas de los edificios
     * (Norte, Sur, Este, Oeste)
     */
    public void generateVistas() {
        setVistaOeste(vistaNorte);
        setVistaSur(vistaNorte);
        setVistaEste(vistaNorte);
    }

    /**
     * Método que obtiene en nombre de la vista que tengamos
     * @return 
     */
    public String getName() {
        if (vistaArea == null) {
            return "";
        }

        return this.vistaArea.getName();
    }

    /**
     * Método que obtiene la vista area
     * @return
     */
    public EdificioBean getVistaArea() {
        return vistaArea;
    }

    /**
     * Método que establece la vista área de la posición actual
     * @param vistaArea
     */
    public void setVistaArea(EdificioBean vistaArea) {
        if (vistaArea == null) {
            return;
        }

        this.vistaArea = vistaArea;
        setVistaNorte(this.vistaArea);
    }

    /**
     * Método que obtiene la vista norte
     * @return
     */
    public EdificioBean getVistaNorte() {
        return vistaNorte;
    }

    /**
     * Método que establece la vista norte de lo que estamos visualizando
     * @param vistaNorte
     */
    public void setVistaNorte(EdificioBean vistaNorte) {
        if (vistaNorte == null) {
            return;
        }

        this.vistaNorte = vistaNorte.clonar();
        this.vistaNorte.setName(getName() + " - Norte");
        this.vistaNorte.setLookAtTilt("75");
        this.vistaNorte.setLookAtHeading("1.844463021888553");
    }

    /**
     * Método que obtiene la vista oeste 
     * @return
     */
    public EdificioBean getVistaOeste() {
        return vistaOeste;
    }

    /**
     * Método que establece la vista oeste del edificio
     * @param vistaOeste
     */
    public void setVistaOeste(EdificioBean vistaOeste) {
        if (vistaOeste == null) {
            return;
        }

        this.vistaOeste = vistaOeste.clonar();
        this.vistaOeste.setName(getName() + " - Oeste");
        this.vistaOeste.setLookAtHeading("270");
    }

    /**
     * Método que obtiene la vista este 
     * @return vistaEste
     */
    public EdificioBean getVistaEste() {
        return vistaEste;
    }

    /**
     * Método que establece la vista este del edificio
     * @param vistaEste
     */
    public void setVistaEste(EdificioBean vistaEste) {
        if (vistaEste == null) {
            return;
        }

        this.vistaEste = vistaEste.clonar();
        this.vistaEste.setName(getName() + " - Este");
        this.vistaEste.setLookAtHeading("90");
    }

    /**
     * Método que establece la vista sur
     * @return vistaSur
     */
    public EdificioBean getVistaSur() {
        return vistaSur;
    }

    /**
     * Método que establece la vista Sur de los edificios
     * @param vistaSur
     */
    public void setVistaSur(EdificioBean vistaSur) {
        if (vistaSur == null) {
            return;
        }

        this.vistaSur = vistaSur.clonar();
        this.vistaSur.setName(getName() + " - Sur");
        this.vistaSur.setLookAtHeading("180");
    }
}
